In recent years, the amount of information which an enterprise needs to be able to process and store has increased dramatically. Some possible reasons for such increase are the ever-increasing reliance by enterprises on the Internet to transact business, the desire to be able to access information from multi-locations by using varying devices (e.g., a cell phone, personal digital assistant, and laptop computer), and the need to meet compliance requirements which encourage enterprises to preserve all information/transactions. Traditionally, enterprises managed information storage by directly linking servers to a local storage subsystem. This direct server-attached storage system, however, is disadvantageous for such system creates a number of “storage islands” at possibly multiple locations which increases management complexity, limits scalability, and results in performance bottlenecks in the server and the local area network. Due to the limitations associated with a direct server-attached storage system, enterprises are currently replacing such system with a Storage Area Network (SAN) which allows storage management to be centralized.
In order to determine the functional limitations of a SAN, the SAN is subjected to stress testing which determines the functional limitations of the network by subjecting the system to extreme conditions such as peak volumes of data. Currently, stress testing against SAN is performed using customized test programs. The customized test programs require complex code modifications in order to create new combinations of stress test types (e.g., controller failover, system reboot, drive failure, hardware fault injection, and the like).
The required code modifications for the new combinations of stress test types is caused by the challenge in synchronizing multiple, parallel stress tests against a limited array of resources such as controllers, volume groups, drives, and the like. These fault injection processes may be coordinated within a given array and sometimes synchronized across multiple arrays in a SAN to meet automated test requirements. Thus, the use of customized test programs requires excessive test and development time for a program must be designed to handle each combination of parallel fault injections. Further, such programs are high maintenance in that new code is required to satisfy each new timing requirement. In addition, the coding of these test combinations is complicated by the coordination of multiple fault injection processes attempting to access a given SAN resource (e.g., drives, controllers, volume groups, and the like) at the same time.
Therefore, it would be desirable to provide a system and method for synchronizing and coordinating parallel, automated fault injection processes against SANs which addressed the limitations associated with the aforementioned customized test programs.